[レポート] Tensorflow勉強会(3) が開催されました!
はじめに
先日 4/13 六本木ヒルズの Google Inc 東京オフィスでTensorFlow勉強会の三回目が開催されました!本記事はそのレポート記事となります。
Machine Intelligence at Google Scale: Vision/Speech API, TensorFlow and Cloud Machine Learning
Google Developer クラウドデベロッパー アドボケイト 佐藤一憲氏
新しいAPI
- Cloud vision API
- Cloud speech API
Tensorflow playground
- Inputと学習器のプロパティを設定できる、またニューラルネットのレイヤも設定できる
Cloud machine learning
-
Tensorflowで定義した分類のグラフをFull managedで分散学習してくれる
-
Destributed tensorflowがバックグラウンドで動く
GCP Next
-
GcpとJupytor統合環境
-
ローカルで学習させると8時間かかる問題が…
-
cloudで分散学習させると30分
-
予測系APIは 300req/s
-
アドホックなお試しをできる環境を今年後半に用意する予定です。
TensorFlowで趣味の画像収集サーバーをつくる(4月号)
有限会社シーリス 代表 有山氏
僕にとっての手近な問題
- 好みの眼鏡っ娘画像を自動で収集したい
実現を阻む3つの壁
- データの壁:大量の眼鏡っ娘画像が必要
-
計算量の壁:時間かかる
-
機械学習の壁:技術学習コスト
-
cipher10のモデルを使って学習させたところ、予測率90-95%、、どう見ても過学習ですね
課題
- 学習データの充実
-
メガネでなくキャラクターを認識している可能性大
cifar10について
-
locally connected層が完全に再現されていない
-
例ではlocally connectedに見えるが…深層学習の本にも載ってないし手がかりがない
-
cuda-convnetのWikiに手がかりがあった
-
実際は畳み込み層と酷似したレイヤ
-
皆さんチュートリアルだけでなく、Exerciseもやりましょう!
-
その結果出てきたTensorBoardは層が一個増えた
-
その結果ロス率が1/3に低下、計算量は上がった
検証データの分類を手で行う
-
訓練データ 1187
-
テストデータ 118
-
訓練データにノイズを加えて増量
-
訓練データ 3万くらい
-
オフィスのサーバーマシンのGPUが使えなくなる
CPUのみで行った結果
-
新しいデータセット予測率 63-71%
-
データ・セットが変わると予測精度が下がった
-
32x32がcifar10だが64x64にしている
学習しないTensorFlow
faho氏
はじめに
- 本発表では機械学習の話は出てきません
-
計算を行うアプリケーションとしてのTensorflow
-
マンデルブロ集合や偏微分方程式のチュートリアル(日本語で触れてる記事皆無)
-
偏微分方程式を解いてみた(数値解析)
二次元の拡散方程式(温度の時間発展熱伝導方程式)
- Tensorflowで積分が計算できます
-
二次元の偏微分
-
ラプラシアンカーネルを用いて畳み込みを行う
-
微小時間後の値を畳み込み層で表現できる
反応拡散方程式
- 動物の持つしましまな皮膚に出てくる模様を記述できる
波動方程式、ポアッソン方程式
-
ver0.7でFFTが実装されたのでポアッソン方程式が解ける
-
C++, numpyで研究され尽くしてるのであまりメリットが感じられなかった
-
数値計算的にはどういう箇所で真価を発揮するか→分散環境で発揮するかもしれない
Tensorflow tutorialの数学的背景クイックツアー
[slideshare id=60016668&doc=tensorflowtutorialsv10-160325063749]
はじめに
- Tensorflowのチュートリアルは例題の並び順が秀逸で、例題の中身を順番に勉強することで、CNNが段階的に理解できる
-
やっぱりただ使うんじゃなくて、どういう理屈で解析しているかを理解したい。
-
ニューラルネットワークの数学的背景を説明したブログを書きました!
たった一つのノードでなにができるか
- ロジスティック回帰による二項分類器について解説します。
-
最尤推定法に則ったロジスティック回帰の説明
-
最大化するパラメータを見つけるための偏微分等をTensorflowが勝手にやってくれます
-
チュートリアルの中ではこのロジスティック回帰の応用として画像認識(MNIST)を行っている
-
チュートリアルは数学のわかる人にとっては非常にわかりやすい
Jupytorの紹介
- JupytorからTensorFlowをばりばり活用できる。GCEでベータ版提供中
TensorFlowをC++の観点から
シーエイトラボ 新村氏
[slideshare id=60946172&doc=tensorflow3-160415081611]
今回の話の経緯
- どのような画像の対象がどのような角度をとっているか知りたい
-
単位四元数を用いて角度が2π違う問題についての誤認識を減らす
本題
- Adding new opのチュートリアルやってみてつまづいたとこ話します
オペレーション追加に必要なこと
- オペレーションを定義する(c++)
-
カーネルに登録及び実装をする(c++)
-
順伝播する関数は定義できる。ただ、逆伝播できない。
-
ソースからビルドしたものとバイナリからビルドしたもので中身が違う…
-
念のためにMNist(手書き数字識別問題)を使ってチェック→ミスがあれば認識正解率0.098になります。(つまり当てずっぽう)
-
ソースのコメントとかの方が参考になった
Tensoflowの大規模分散化
日本Androidの会 丸山不二夫氏
[slideshare id=60516464&doc=tensorflowcntk-160405164026]
一回の実験に必要な時間と研究の生産性
- 数分ないし数時間 すぐに耐えられる
- 1-4日 耐えられる インタラクティブではなくなるが、複数の実験を並行して走らせられる
- 1-4週 高い価値のある研究のみ、研究は止まる
- 1ヶ月以上 やろうとも思わない
-
お金、設備の問題でコケる。GPUをみんなが持って、研究する段階までいかないとダメ
-
頭のなかで動かす作業の方がずっと役にたつ。ニューラルネットの理解そのものに時間を割いた方が実りが大きい。
-
ネットワークのオーバヘッドが分散オーバヘッドより高かったら失敗する。Googleのインフラでそれは解消されている。
どう重みとバイアスを修正するか
- データの数が大きくなると、計算量などが大きくなり、パラメータの計算に時間がかかる
-
SDGひとつのデータでパラメータ変更→早いけど不正確さが増す
-
両方のかね合わせがMini-batch→現在の主流
モデルの中で分散したデバイスを指定する
-
ミニバッチ処理をTensorflowでやってみる
-
GPUのサーバーコストがどのくらいかかるかにかかっている(Facebookの画像認識は一台80万)
-
自分ができる範囲のことを見出してやっていくことが重要(高価・大規模な分析基盤はかならず限界がくる)
-
ニューラルネットの理論を理解することから始めて見てはどうでしょうか
おわりに
Tensorflowと銘打った勉強会でしたが、わりと今回は理論よりの話が多かったように思います。個人的に一番面白かったのは丸山先生のお話でした。巨大化する観測機構とそれにつきまとう限界のテーマは機械学習のみならず、巨大な検証設備を用いるような科学によくある話です。私事で恐縮ですが学生の時にドイツ語で学んだテキストでもこのようなテーマを扱った箇所があり、結構な時間を使い、頭を悩ませたことがありました。このテーマについては今でもモヤモヤしているため、もっと話を聞きたいと強く思いました。